import _axios from "@/plugins/axios";


// 用户预下单：购买接口
export function orderCreate({ orderItemList, remarks, imageRemarks }) {
    return _axios({
        url: '/order/create',
        method: 'post',
        data: {
            orderItemList, // 购买信息
            remarks, // 备注
            imageRemarks
        }
    })
}


// 取消订单
export function cancelOrder(data) {
    return _axios({
        url: '/order/cancel',
        method: 'post',
        data
    })
}

// 取消子订单
export function orderItemCancel(data) {
    return _axios({
        url: '/order/orderItemCancel',
        method: 'post',
        data
    })
}


// 用户获取确认订单数据接口：确认订单
export function confirmOrderList(preOrderNo) {
    return _axios({
        url: '/order/pre/order',
        method: 'get',
        params: {
            preOrderNo // 订单号
        }
    })
}


// 用户选择地址接口
export function selectAddress({ addressId, orderNum }) {
    return _axios({
        url: '/order/selectAddress',
        method: 'post',
        data: {
            addressId, // 地址ID
            orderNum // 订单号
        }
    })
}
// 增值服务取消
export function cancelSer({ id, serviceType }) {
    return _axios({
        url: '/shopcart/cancel/service',
        method: 'post',
        data: {
            id, // 购物车ID
            serviceType // 增值服务类型:1-图片;2-视频
        }
    })
}
// 购物车-修改增值服务
export function editSer({ id, services, videoServices }) {
    return _axios({
        url: '/shopcart/edit/service',
        method: 'post',
        data: {
            id,
            services,
            videoServices
        }
    })
}
// 订单-增值服务追加
export function addService({ orderItemId, services, videoServices }) {
    return _axios({
        url: '/order/addService/pay',
        method: 'post',
        data: {
            orderItemId,
            services,
            videoServices
        }
    })
}

// 订单分页列表查询
export function orderList({ pageNo, pageSize, subject, status, isQueryWaitConfirm, activityType }) {
    return _axios({
        url: '/order/listV2',
        method: 'get',
        params: {
            subject, // 订单号
            pageNo, // 页
            pageSize, // 页数
            status, // 状态
            isQueryWaitConfirm,
            activityType
        }
    })
}

// 订单详情
export function getOrderDetail(params) {
    return _axios({
        url: '/order/detail',
        method: 'get',
        params
    })
}
// 订单详情
export function getOrderDetailV2(params) {
    return _axios({
        url: '/order/detailV2',
        method: 'get',
        params
    })
}

// 用户提单接口
export function submitV2({ addressId, cartItems, inviteCode }) {
    return _axios({
        url: '/order/submitV2',
        method: 'post',
        data: {
            addressId,
            cartItems, // 订单项 订单项Id 留言备注
            inviteCode
        }
    })
}

// 拼团用户提单接口
export function submitGroupV2({ activityCode, activityId, addressId, cartItems, inviteCode }) {
    return _axios({
        url: '/order/submitV2/activity',
        method: 'post',
        data: {
            activityCode,
            activityId,
            addressId,
            cartItems, // 订单项 订单项Id 留言备注
            inviteCode
        }
    })
}

// 用户提单接口
export function orderSubmit({ addressId, orderNo, orderItemList }) {
    return _axios({
        url: '/order/submit',
        method: 'post',
        data: {
            addressId,
            orderItemList, // 订单项 订单项Id 留言备注
            orderNo // 订单号
        }
    })
}


/**
 * 订单支付
 * @param channelCode string 
 * @param orderNo string 
 * @param currencyCode string 
 * @param clientType string 
 * @param couponCustomerId string 
 * @param payAmount string 
 * @param additionalParam obj paymentMethod = 'GooglePay'  
 * @param couponId string 
 */
export function orderPayment(data) {
    return _axios({
        url: '/order/pay',
        method: 'post',
        data: {
            ...data,
            clientType:'web'
        }
    })
}

/**
 * 组合支付
 * @param channelCodeMaster string 主要支付通道标识code
 * @param channelCodeSlave string 从属支付通道标识code
 * @param clientType string 客户端类型(WEB:浏览器，H5:小程序，ANDROID:安卓，IOS:苹果)
 * @param currencyCode string 币种编码
 * @param orderNo string 订单号/运单号
 * @param additionalParam obj paymentMethod = 'GooglePay' 
 * @param payAmount string 
 */
export function orderMergePay(data) {
    return _axios({
        url: '/order/mergePay',
        method: 'post',
        data: {
            ...data,
            clientType:'web'
        }
    })
}

// 订单查询
export function orderQuery({ orderNo }) {
    return _axios({
        url: '/payment/order/query',
        method: 'get',
        params: {
            orderNo // 订单号
        }
    })
}

// 支付列表
export function orderChannelList({ currencyCode, orderNo, mergePayChannelCode }) {
    return _axios({
        url: '/channel/list',
        method: 'post',
        data: {
            currencyCode, // 币种编码
            orderNo, // 订单号
            mergePayChannelCode
        }
    })
}

// 获取订单的物流追踪信息（国内）
export function queryLogisticsTrace(expressNo) {
    return _axios({
        url: '/logistics/track/domestic',
        method: 'get',
        params: {
            expressNo, // 快递追踪号
        }
    })
}

// 获取交易订单的物流信息（国内）
export function queryLogisticsInfos(subOrderNo) {
    return _axios({
        url: '/order/queryLogisticsInfos',
        method: 'get',
        params: {
            subOrderNo, // 子订单号（订单项ID）PI开头的
        }
    })
}


// 用户下单接口（转运单）
export function createTransOrder({ addressId, orderParamItemList, remarks }) {
    return _axios({
        url: '/order/transfer/create',
        method: 'post',
        data: {
            addressId, // 地址ID
            orderParamItemList, // 转运单项目
            remarks // 备注
        }
    })
}


// 定制单-创建接口
export function createCustomize({ addressId, contact, maxPrice, minPrice, imageList, quantity, remarks, expressFee }) {
    return _axios({
        url: '/order/customize/create',
        method: 'post',
        data: {
            addressId, // 收货地址id
            contact, // 用户联系方式
            expressFee, // 国内运费
            imageList, // 商品图片地址 如：["/prduct/1.png"]，必填
            maxPrice, // 最高价格
            minPrice, // 最低价格
            quantity,
            remarks
        }
    })
}


// 需求单(手动)接口
export function createManual({ addressId, contact, imageList, subject, skuAttrEnum, detailUrl, quantity, remarks, expressFee, unitPrice }) {
    return _axios({
        url: '/order/manual/create',
        method: 'post',
        data: {
            addressId,
            contact, // 用户联系方式(Whatsapp)
            detailUrl, // 商品链接 http:// https:// 开头，
            expressFee, // 国内运费
            imageList, // 商品图片地址
            quantity, // 商品数量(计算金额用)
            subject, // 商品名称，必填
            skuAttrEnum, // 商品规格，必填
            remarks, // 备注
            unitPrice // 单价
        }
    })
}


// 转运单分页列表查询
export function transOrderList({ orderNo, pageNo, pageSize }) {
    return _axios({
        url: '/order/transfer/list',
        method: 'get',
        params: {
            orderNo,
            pageNo,
            pageSize
        }
    })
}


// 修改快递单号（转运单）
export function updateTransOrder(id, expressNo,) {
    return _axios({
        url: '/order/transfer/updateTransOrder',
        method: 'post',
        data: {
            id, // 修改的id
            expressNo // 国内段-快递单号，必填
        }
    })
}

// 领取优惠券
export function getCoupon(data) {
    return _axios({
        url: '/coupon/getCoupon',
        method: 'post',
        data
    })
}

// 弹窗优惠券
export function homeCouponList(params) {
    return _axios({
        url: '/coupon/list',
        method: 'get',
        params
    })
}

// 我的优惠券
export function myCouponList(params) {
    return _axios({
        url: '/coupon/myCouponList@2',
        method: 'get',
        params
    })
}

// 获取微店地址参数
export function resolveAddress(params) {
    return _axios({
        url: '/product/address/resolve',
        method: 'get',
        params
    })
}

// 兑换码领取接口
export function exchangeCoupon(data) {
    return _axios({
        url: '/coupon/exchangeCoupon',
        method: 'post',
        data
    })
}

//订单支付-优惠券列表
export function myAvailableCouponList(params) {
    return _axios({
        url: '/coupon-customer/my-available-coupon-list',
        method: 'get',
        params
    })
}

//最终价格
export function price(data) {
    return _axios({
        url: '/channel/price',
        method: 'post',
        data
    })
}

// 弹窗优惠券
export function getAllCurrency(params) {
    return _axios({
        url: '/base/getAllCurrency',
        method: 'get',
        params
    })
}

// 增值服务点击统计-保存
export function clickStatistics({ orderItemId, clientType, resourceType, sourceType, type, shareChannel }) {
    return _axios({
        url: '/user/click/save',
        method: 'post',
        data: {
            orderItemId,// 子订单号
            clientType,//请求类型：1-PC;2-H5
            resourceType,//资源类型:1-图片;2-视频
            sourceType,// 来源：1-增值服务;2-普通QC
            type,//类型：1-分享；2-下载
            shareChannel,//分享渠道
        }
    })
}

// 缺货-继续等待
export function waitSentOrders({ orderItemId }) {
    return _axios({
        url: '/order/waitSentOrders',
        method: 'post',
        data: {
            orderItemId,// 子订单号
        }
    })
}

// 用户回执（继续等待、我已知晓和提交备注）
export function handleOrderUserReply({ content, imgUrl, orderItemId, replyType }) {
    return _axios({
        url: '/order/handleOrderUserReply',
        method: 'post',
        data: {
            content,
            imgUrl,
            orderItemId,
            replyType
        }
    })
}
// 用户回复留言
export function handleUserReplyMessage({ content, imgUrls, orderItemId }) {
    return _axios({
        url: '/order/userReplyMessage',
        method: 'post',
        data: {
            content,
            imgUrls,
            orderItemId
        }
    })
}

// 获取留言板列表
export function getListUserMessage(orderItemId) {
    return _axios({
        url: '/order/listUserMessage',
        method: 'get',
        params: {
            orderItemId
        }
    })
}

// 检查订单使用的优惠券是否过期
export function getCheckCouponExpiration(orderNoOrItemId) {
    return _axios({
        url: '/order/checkCouponExpiration',
        method: 'get',
        params: {
            orderNoOrItemId
        }
    })
}